{
  // 学习目标：定义泛型接口
  // 场景 ：定义相似的结构， 避免定义重复的字段
  // 特点：属性与方法中都可以访问泛型变量
  // 注意💥，使用接口时，泛型不可以省略
  interface Person<T> {
    name: T;
    age: number;
    hobby: string;
    sayHello: (msg: T) => void;
  }
  interface IResponse<T> {
    data: T;
    message: string;
    status: number;
  }

  // 登录接口的返回值
  let res1: IResponse<{ token: string }> = {
    data: { token: '123' },
    message: '登录成功',
    status: 200,
  };

  let res2: IResponse<{ title: string; content: string }> = {
    data: {
      title: '123',
      content: '132',
    },
    message: '请求成功',
    status: 200,
  };
}
